From a827d2358e4ef4ca61e58bd9c2d76309dc1fe4d7 Mon Sep 17 00:00:00 2001 From: Roan Kattouw Date: Tue, 24 Mar 2009 16:06:57 +0000 Subject: [PATCH] Followup to r48746: forgot to add new file --- includes/api/ApiUserrights.php | 117 +++++++++++++++++++++++++++++++++ 1 file changed, 117 insertions(+) create mode 100644 includes/api/ApiUserrights.php diff --git a/includes/api/ApiUserrights.php b/includes/api/ApiUserrights.php new file mode 100644 index 0000000000..3f1e34c731 --- /dev/null +++ b/includes/api/ApiUserrights.php @@ -0,0 +1,117 @@ +.@home.nl + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + * http://www.gnu.org/copyleft/gpl.html + */ + +if (!defined('MEDIAWIKI')) { + // Eclipse helper - will be ignored in production + require_once ("ApiBase.php"); +} + + +/** + * @ingroup API + */ +class ApiUserrights extends ApiBase { + + public function __construct($main, $action) { + parent :: __construct($main, $action); + } + + public function execute() { + global $wgUser; + $params = $this->extractRequestParams(); + if(is_null($params['user'])) + $this->dieUsageMsg(array('missingparam', 'user')); + $user = User::newFromName($params['user']); + if($user->isAnon()) + $this->dieUsageMsg(array('nosuchuser', $params['user'])); + if(is_null($params['token'])) + $this->dieUsageMsg(array('missingparam', 'token')); + if(!$wgUser->matchEditToken($params['token'], $user->getName())) + $this->dieUsageMsg(array('sessionfailure')); + + $r['user'] = $user->getName(); + list($r['added'], $r['removed']) = + UserrightsPage::doSaveUserGroups( + $user, (array)$params['add'], + (array)$params['remove'], $params['reason']); + + $this->getResult()->setIndexedTagName($r['added'], 'group'); + $this->getResult()->setIndexedTagName($r['removed'], 'group'); + $this->getResult()->addValue(null, $this->getModuleName(), $r); + } + + public function mustBePosted() { + return true; + } + + public function isWriteMode() { + return true; + } + + public function getAllowedParams() { + return array ( + 'user' => array( + ApiBase :: PARAM_TYPE => 'user' + ), + 'add' => array( + ApiBase :: PARAM_TYPE => User::getAllGroups(), + ApiBase :: PARAM_ISMULTI => true + ), + 'remove' => array( + ApiBase :: PARAM_TYPE => User::getAllGroups(), + ApiBase :: PARAM_ISMULTI => true + ), + 'token' => null, + 'reason' => array( + ApiBase :: PARAM_DFLT => '' + ) + ); + } + + public function getParamDescription() { + return array ( + 'user' => 'User name', + 'add' => 'Add the user to these groups', + 'remove' => 'Remove the user from these groups', + 'token' => 'A userrights token previously retrieved through list=users', + 'reason' => 'Reason for the change', + ); + } + + public function getDescription() { + return array( + 'Add/remove a user to/from groups', + ); + } + + protected function getExamples() { + return array ( + 'api.php?action=userrights&user=FooBot&add=bot&remove=sysop|bureaucrat&token=123ABC' + ); + } + + public function getVersion() { + return __CLASS__ . ': $Id: ApiMove.php 48091 2009-03-06 13:49:44Z catrope $'; + } +} -- 2.20.1